Some modern broadcast receiver devices are designed to support multiple audio inputs from different broadcast domains. For example end user content (such as a radio show) may be received via audio streams from domains such as frequency modulation broadcasting (FM), digital audio broadcasting (DAB) and/or Internet radio. The transmit paths of these audio stream may have varying processing delays which result in streams that are misaligned in time. Initial processing at the receiver may misalign the audio streams further.
It may be a requirement for the broadcast receiver to switch from one audio stream or input to another, for example an input may be lost when the receiver moves out of range of the input's source. Due to the misalignment, the transition may not be seamless which degrades user experience. For example when switching from a transmit path with a short processing delay to a transmit path with a long processing delay, data may not yet be available on the high processing delay path. A potential approach to address this is the buffering of the received audio streams in order to realign the incoming data. However such storing may be subject to restrictions.
Embodiments of the present application may be concerned with a storage mechanism for broadcast data received at a multi-source receiver.
According to a first aspect, there is provided a method for aligning data streams at a multi-source receiver comprising: receiving portions of data for a plurality of data streams at a reception device, the plurality of data streams carrying respective content, wherein the content of each data stream is misaligned with at least one other data stream with respect to time; forwarding the portions of data to a host device to be stored in respective delay buffers; and maintaining by the reception device, indexing information for each of the delay buffers; wherein forwarding the portions of data to the host device further comprises forwarding indexing information for each of the delay buffers with the portions of data.
The indexing information may comprise read and write pointers for each delay buffer. Maintaining indexing information may further comprise: adjusting the read pointers to point to portions in the respective delay buffers carrying corresponding content. The step of forwarding the portions of data to the host device may further comprise: sending a forwarding message to the host device comprising the portions of data and the write pointers. The method may further comprise: sending a request message to the host device for at least one of the stored data portions, the request message comprising an associated read pointer. The method may further comprise: sending the forwarding message and the request message as part of a first communication message.
The method may further comprise: receiving delayed data portions from the host device, wherein the received delayed data portions carry corresponding content. The method may further comprise: rendering at least one of the received delayed data portions to an output. Aa portion of data may have a predetermined size. Forwarding the portions of data to a host device to be stored in respective delay buffers may further comprise forwarding the portions of data in response to one portion of data being received on each of the plurality of data streams. The method may further comprise forwarding the portions of data to a host device to be stored in respective delay buffers periodically.
The method may further comprise: receiving at least one stored portion of data from the host device in response to a request. The method may further comprise: receiving a further portion of data received on a further data stream from an additional source at the host device. The method may further comprise: receiving a portion of data of a further data stream at the host device, the further data stream being received from a further source and carrying the corresponding content. The method may further comprise: sending the received portion of data of the further data stream from the host device to a reception device in response to a request for at least one data portion from the reception device.
Maintaining indexing information for each of the delay buffers may further comprise storing meta information associated with respective data portions. The meta information may comprise quality information of the respective data portion. The method may further comprise: identifying data portions stored at the host device to be requested in dependence on at least the stored meta information. The method may further comprise requesting the identified data portions. Identifying data portions stored at the host device may comprise identifying at least one data portion of sufficient quality to be rendered.
According to a second aspect, there is provided a reception device comprising: a plurality of receivers and associated portion buffers configured to receive portions of data for a plurality of data streams carrying respective content, wherein the content of each data stream is misaligned with at least one other data stream with respect to time; a controller configured to forward the portions of data to a host device to be stored in respective delay buffers; and a memory, which together with the controller, maintains indexing information for each of the delay buffers; wherein the controller is further configured to forward indexing information for each of the delay buffers with the portions of data.
The indexing information may comprise read and write pointers for each delay buffer. The controller may be configured to maintain the indexing information by adjusting the read pointers to point to portions in the respective delay buffers carrying corresponding content. The controller may be configured to send a forwarding message to the host device comprising the portions of data and the write pointers. The controller may be further configured to send a request message to the host device for at least one of the stored data portions, the request message comprising an associated read pointer. The controller may be further configured to send the forwarding message and the request message as part of a first communication message.
The reception device may be further configured to receive delayed data portions from the host device, wherein the received delayed data portions carry corresponding content. The reception device may be further configured to render at least one of the received delayed data portions to an output. A portion of data may have a predetermined size. The controller may be further configured to forward the portions of data in response to one portion of data being received on each of the plurality of data streams. The controller may be further configured to forward the portions of data to the host device periodically.
The reception device may be further configured to receive at least one stored portion of data from the host device in response to a request. The reception device may be further configured to receive a data portion from a further data stream received at the host device in response to a request for a data portions of at least one of the plurality of data streams. The controller may be further configured to store meta information associated with respective data portions. The meta information may comprise quality information of the respective data portion.
The controller may be further configured to identify data portions stored at the host device to be requested in dependence on at least the stored meta information. The reception device may be further configured to request the identified data portions. The reception device may be further configured to identify at least one data portion of sufficient quality to be rendered.
According to a third aspect, there is provided a method for buffering data streams for a multi-source receiver comprising: receiving portions of data from a reception device in a forwarding message, the portions of data forming part of a plurality of data streams carrying respective content, wherein the content of each data stream is misaligned with at least one other data stream with respect to time; receiving indexing information associated with a plurality of delay buffers in the forwarding message; and storing the portions of data in the respective delay buffers in dependence on the indexing information.
The indexing information may comprise at least a write pointer for each delay buffer. The method may further comprise receiving a request message requesting at least one data portion from the delay buffers, the request message comprising indexing information identifying the data portions requested. The indexing information in the request message may comprise a read pointer associated with the requested data portion(s). The forwarding message and the request message may form a first communication message.
The method may further comprise providing data portions from the delay buffers to the reception device, the provided data portions carry corresponding content. A portion of data may have a predetermined size. The method may further comprise providing at least one stored portion of data from the delay buffers in response to a request from the reception device. The method may further comprise: receiving a further portion of data from a further data stream, the further data stream being received from a further source and carrying the corresponding content. The method may further comprise: providing the further portion of data to a reception device in response to a request for at least one data portion from the delay buffers.
According to a fourth aspect, there is provided a host device for buffering data streams for a multi-source receiver comprising: an input configured to receive portions of data from a reception device in a forwarding message, the portions of data forming part of a plurality of data streams carrying respective content, wherein the content of each data stream is misaligned with at least one other data stream with respect to time, the input further configured to receive indexing information associated with a plurality of delay buffers in the forwarding message; and a plurality of delay buffers configured to store the portions of data in the respective delay buffers in dependence on the indexing information.
The indexing information may comprise at least a write pointer for each delay buffer. The input may be further configured to receive a request message requesting at least one data portion from the delay buffers, the request message comprising indexing information identifying the data portions requested. The indexing information in the request message may comprise a read pointer associated with the requested data portion(s). The forwarding message and the request message may form a first communication message.
The host device may further comprise an output configured to provide data portions from the delay buffers to the reception device, the provided data portions carry corresponding content. A portion of data may have a predetermined size. The host device may further comprise an output configured to provide at least one stored portion of data from the delay buffers in response to a request from the reception device. The input may be further configured to receive a further portion of data from a further data stream, the further data stream being received from a further source and carrying the corresponding content. The output may be further configured to provide the further portion of data to a reception device in response to a request for at least one data portion from the delay buffers.
It will be appreciated that for features that span more than one drawing like reference numerals indicate the like feature.